from __future__ import absolute_import, division, print_function, unicode_literals

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Helper libraries
import numpy as np
import matplotlib.pyplot as plt

fashion_mnist = keras.datasets.fashion_mnist  # 获取数据集
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()  # 加载数据集

def show(n):
    print(tf.__version__)#输出版本号

    #显示图片窗口
    plt.figure()
    plt.imshow(train_images[0])
    plt.colorbar()
    plt.grid(False)
    plt.show()

def train():
   global train_images
   global test_images
   #归一化
   train_images= train_images/ 255.0
   test_images= test_images/ 255.0

   class_names = ['one', 'two', 'three', 'four', 'five',
                   'six', 'seven', 'eight', 'nine', 'ten']

   plt.figure(figsize=(10,10))
   for i in range(25):
    plt.subplot(5,9,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
    plt.show()

    #28*28的图片
    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(28, 28)),
        keras.layers.Dense(128, activation='relu'),
        keras.layers.Dense(10, activation='softmax')
    ])

    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    model.fit(train_images, train_labels, epochs=1)

    test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)

    print('\nTest accuracy:', test_acc)

if __name__ == '__main__':
    show(3)
    train()